//
//  HMHomeTableViewCell.swift
//  Weibo
//
//  Created by itteacher on 2017/7/26.
//  Copyright © 2017年 itteacher. All rights reserved.
//

import UIKit
import SnapKit

/*
    1. 原创微博视图 -> UIView
    2. 转发微博视图 -> UIView
    3. 微博toolbar -> UIView
 */

//  自定义首页微博cell
class HMHomeTableViewCell: UITableViewCell {
    
    //  记录toolbar的顶部约束
    var toolbarTopConstranit: Constraint?
    
    //  引用ViewModel
    var statusViewModel: HMStatusViewModel? {
        didSet {
            originalView.statusViewModel = statusViewModel
            
            /*
          
          
             "<SnapKit.LayoutConstraint:0x6080000b58a0@HMHomeTableViewCell.swift#37 Weibo.HMHomeToolBar:0x7f9f4711bc80.top == Weibo.HMHomeReweetView:0x7f9f4711b2e0.bottom>",
             "<SnapKit.LayoutConstraint:0x6180000b4e80@HMHomeTableViewCell.swift#47 Weibo.HMHomeToolBar:0x7f9f4711bc80.top == Weibo.HMHomeOriginalView:0x7f9f47117aa0.bottom>
             */
            
            //  注意点： 重新创建toolbar底部约束之前，把之前的顶部约束卸载掉，保证toolbar顶部只有一条约束
            toolbarTopConstranit?.deactivate()
            if statusViewModel?.status?.retweeted_status != nil {
                //  有转发微博
                //  1. 显示转发微博视图
                retweetView.isHidden = false
                //  2. 重新创建toolBar顶部约束
                toolBar.snp.makeConstraints({ (make) in
                    //  重新记录新创建的toolbar顶部约束
                    toolbarTopConstranit = make.top.equalTo(retweetView.snp.bottom).constraint
                })
                //  3. 绑定转发微博内容
                retweetView.statusViewModel = statusViewModel
            } else {
                //  没有转发微博
                //  1. 隐藏转发微博视图
                retweetView.isHidden = true
                //  2. 重新创建toolBar顶部约束
                toolBar.snp.makeConstraints({ (make) in
                    //  重新记录新创建的toolbar顶部约束
                    toolbarTopConstranit = make.top.equalTo(originalView.snp.bottom).constraint
                })
            }
            
            
        }
    }
    
    //  MARK: --懒加载控件
    //  原创微博视图
    fileprivate lazy var originalView: HMHomeOriginalView = HMHomeOriginalView()
    //  转发微博视图
    fileprivate lazy var retweetView: HMHomeReweetView = HMHomeReweetView()
    //  微博toolbar
    fileprivate lazy var toolBar: HMHomeToolBar = HMHomeToolBar()

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //  添加控件设置约束
    private func setupUI() {
        //  设置contentView的背景色
        contentView.backgroundColor = UIColor(white: 0.95, alpha: 1)
        contentView.addSubview(originalView)
        contentView.addSubview(retweetView)
        contentView.addSubview(toolBar)
        
        originalView.snp.makeConstraints { (make) in
            make.top.equalTo(contentView).offset(8)
            make.leading.trailing.equalTo(contentView)
        }
        
        retweetView.snp.makeConstraints { (make) in
            make.top.equalTo(originalView.snp.bottom)
            make.leading.trailing.equalTo(originalView)
        }
        
        toolBar.snp.makeConstraints { (make) in
            //  oc里面直接接收结果就可以了，因为约束成功后返回的就是约束对象
            toolbarTopConstranit = make.top.equalTo(retweetView.snp.bottom).constraint
            make.leading.trailing.equalTo(retweetView)
            make.height.equalTo(35)
            
            //  关键约束,确定行高
            make.bottom.equalTo(contentView)
            
        }
        
        
    }

}
